package com.vsen.lpr.controller;

import com.vsen.lpr.common.base.BaseController;
import com.vsen.lpr.common.model.Response;
import com.vsen.lpr.pojo.dto.ShoppingCartDto;
import com.vsen.lpr.pojo.dto.task.AddTaskDto;
import com.vsen.lpr.pojo.dto.task.EditTaskDto;
import com.vsen.lpr.pojo.dto.task.TaskDto;
import com.vsen.lpr.pojo.vo.task.TaskVo;
import com.vsen.lpr.service.task.TaskService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.validation.BindingResult;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.List;

@Controller
@RequestMapping("/task")
@Slf4j
public class TaskController extends BaseController {

    @Autowired
    private TaskService taskService;

    /**
     * 新增任务
     *
     * @return
     */
    @PostMapping("/addTask")
    @ResponseBody
    Response addTask(@RequestBody @Validated  AddTaskDto dto, BindingResult bindingResult) throws Exception {
        checkParameters(bindingResult);
        return taskService.addTask(dto);
    }


    /**
     * 删除任务
     *
     * @return
     */
    @PostMapping("/delTask")
    @ResponseBody
    Response delTask(@RequestBody TaskDto dto) {
        return taskService.delTask(dto);
    }


    /**
     * 任务详情
     *
     * @return
     */
    @PostMapping("/taskDetail")
    @ResponseBody
    Response<TaskVo> taskDetail(@RequestBody TaskDto dto) {
        return taskService.taskDetail(dto);
    }


    /**
     * 打开/关闭提醒
     *
     * @return
     */
    @PostMapping("/ctrlRemind")
    @ResponseBody
    Response ctrlRemind(@RequestBody TaskDto dto) {
        return taskService.ctrlRemind(dto);
    }


    /**
     * 修改任务
     *
     * @return
     */
    @PostMapping("/editTask")
    @ResponseBody
    Response editTask(@RequestBody @Validated  EditTaskDto dto, BindingResult bindingResult) throws Exception {
        checkParameters(bindingResult);
        return taskService.editTask(dto);
    }

    /**
     * 任务列表
     *
     * @return
     */
    @PostMapping("/taskList")
    @ResponseBody
    Response<List<TaskVo>> taskList(@RequestBody TaskDto dto) {
        return taskService.taskList(dto);
    }


}
